/*
 * VerbruiksMeting.cpp
 *
 * Created on: 18-04-2014
 *     Author: A.W. Janisse
 */

#include "VerbruiksMeting.h"
#include "TestSensor.h"
#include "TestKlok.h"
#include <typeinfo> // typeid
#include <iostream> // endl

using namespace std;

VerbruiksMeting::VerbruiksMeting(Display *d, IOpslag *o)
:uurTotaal(0), vorigUurTotaal(0), dagTotaal(0)
{
    this->display = d;
    this->opslag = o;
}

VerbruiksMeting::~VerbruiksMeting(void)
{
    //dtor
}

void VerbruiksMeting::Update(Subject *s)
{
    if(s == NULL) return;

    if( typeid(*s) == typeid(TestKlok) )
    {
        TestKlok *klok = static_cast<TestKlok*>(s);

        display->showDateTime(klok);
/*
        // **** BEPAAL EERST OF ER EEN NIEUW UUR GESTART IS *****
        {
            berekenDagTotaal();
            resetUurTotaal();
        }
        // **** BEPAAL OF ER EEN NIEUWE DAG GESTART IS ****
        {
            //opslag->addData(klok->)
            resetDagTotaal();
            display->showDagTotaal(dagTotaal);
        }
*/
    }
    else if( typeid(*s) == typeid(TestSensor) )
    {
        verhoogUurTotaal();
        if(uurTotaal != vorigUurTotaal)
        {
            display->showUurTotaal(uurTotaal);
            vorigUurTotaal = uurTotaal;
        }
    }
}

int VerbruiksMeting::getUurTotaal()
{
    return uurTotaal;
}

int VerbruiksMeting::getDagTotaal()
{
    return dagTotaal;
}
void VerbruiksMeting::verhoogUurTotaal()
{
    uurTotaal += 1;
}

void VerbruiksMeting::berekenDagTotaal()
{
    dagTotaal += uurTotaal;
}

void VerbruiksMeting::resetUurTotaal()
{
    uurTotaal = 0;
}

void VerbruiksMeting::resetDagTotaal()
{
    dagTotaal = 0;
}
